package com.activeMQ.student.queue;

import lombok.SneakyThrows;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException;

/**
 * 异步的队列消费者
 * @date 2020/10/7 14:41
 */
public class TestSyncConsumer {

    //    服务端的ip和端口号
    private static String brokerUrl = "tcp://106.12.51.117:61617";

    //    消息队列的名称
    private static String queueName = "First-Message";

    public static void main(String[] args) throws JMSException, IOException {

//        创建ConnectionFactory对象，并且指定服务端的ip和端口号。
        ConnectionFactory factory = new ActiveMQConnectionFactory(brokerUrl);

//        使用factory对象创建一个connection对象
        Connection connection = factory.createConnection();

//        开启连接
        connection.start();

//        创建session对象，第一个参数为是否开启事务，第二个为接收者的签收状态。
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

//        使用session对象创建destination对象
        Queue queue = session.createQueue(queueName);

//        创建消费者对象
        MessageConsumer consumer = session.createConsumer(queue);

//       异步消息监听
        consumer.setMessageListener(new MessageListener() {
            @SneakyThrows
            public void onMessage(Message message) {
                if (message instanceof  TextMessage){
                    TextMessage textMessage = (TextMessage) message;
                        System.out.println(textMessage.getText());
                }
            }
        });



//        不让程序结束
        System.in.read();

//        关机资源
        consumer.close();
        session.close();
        connection.close();

        System.out.println("消息接收成功");
    }

}
